|
Technical Q&AJava 16 - Java をベースとしたコマンドラインインタフェースのアプリケーションを記述するには(1999 年 4 月 27 日)
Q: AppleScript からコマンドラインの Java アプリケーションを実行するとき、タイムアウトを起こさないようにする方法を教えてください。インタフェースコンポーネントがないので、MRJ に用意されている 'aete' は役に立ちません。コマンドラインクラス MyParser の用語説明を作成するよう要求すると、メソッドのない MyParser クラスが作成されます。つまり、mainメソッドに相当する「主たる」動詞が存在しないのです。 そこで JBindery にコマンドラインのパラメータを配置し、JBound アプリケーションを実行するようにしました。JBound の MyParser アプリケーションはうまく実行されて終了しましたが、呼び出し側の AppleScript に何も返されません。結果としてイベントがタイムアウトになります。この動作を修正するにはどうすればよいでしょうか。
A: MRJ のスクリプティングモデル(MRJ scripting model)は、通常の (スクリプティング対応の) Mac アプリケーションでスクリプティングを行う場合と非常によく似ています。まず、スクリプティング対応アプリケーションを実行し、スクリプティングコマンドを送ります。通常は JBound アプリケーションを作成し、それを起動して、そのアプリケーションのいずれかの AWT ベースのウィンドウを利用してスクリプトを記述します。 AWT ウィンドウを作成しないコマンドラインをベースとした Java アプリケーションを作成する場合は、アプリケーションは MRJ の標準的なスクリプティングモデルに準拠しないことになります。スクリプトでアプリケーションを利用するには、スクリプティングを利用できるようにいくつかの手順を追加する必要があります。 まず、スクリプティングコマンドを送るために Java のシェルアプリケーションを実行する必要があります。空の main() 関数がある小さなアプリケーションを作成するか、または既存の Java アプリケーションをシェルとして扱います。 次に、コマンドラインアプリケーションによって利用される main() を含む jar ファイルがクラスパスに存在していることを確認する必要があります。この jar ファイルがすでに「MRJClasses」フォルダに入っている場合は、何もする必要はありません。この jar ファイルが「MRJClasses」フォルダに入っていない場合は、次のスクリプトを使ってクラスパスに追加する必要があります。
これで main を起動できるようになります。
しかし、クラスが void を返すように定義されているので、依然として結果は何も得られません。
コンソールウィンドウの出力を得たい場合は、次のように記述します。
-- Michael Hopkins Worldwide Developer Technical Support Technical Q&As | Contents Previous Question To contact us, please use the Contact Us page. |